package com.lh.java.basic.grammer;

import java.util.ArrayList;

class Info3<T> { 
	private T var; // 此类型由外部决定

	public T getVar() {
		return this.var;
	}

	public void setVar(T var) {
		this.var = var;
	}

	public String toString() { // 覆写Object类中的toString()方法
		return this.var.toString();
	}
}
class Info4<T> { 
	private T var; // 此类型由外部决定

	public T getVar() {
		return this.var;
	}

	public void setVar(T var) {
		this.var = var;
	}

	public String toString() { // 覆写Object类中的toString()方法
		return this.var.toString();
	}
}

public class GenericsDemo28 {
	public static void main(String args[]) {
		Info3<String> i1 = new Info3<String>();
		Info3<String> i2 = new Info3<String>();
		i1.setVar("HELLO"); // 设置内容
		i2.setVar("汤姆"); // 设置内容
		add(i1, i2);
		Info3<Integer> i3 = new Info3<Integer>();
		Info4<Object> i4 = new Info4<Object>();
		i3.setVar(56); // 设置内容
		i4.setVar("string"); // 设置内容
		add3(i3,i4);
	}

	public static <T> void add(Info3<T> i1, Info3<T> i2) {
		System.out.println(i1.getVar() + " " + i2.getVar());
	}
	
	public static <T extends Number >  void add3(Info3<T> i1, Info4<? super Number> i2) {
		System.out.println(i1.getVar() + " " + i2.getVar());
	}
	 public static <F extends Number> ArrayList<F> newArrayList() {
		    return new ArrayList<F>();
		  }
	
	
}